<?php

/** Thiết lập chế độ báo lỗi */
function setReporting()
{
    global $config;
    error_reporting(E_ALL);
    ini_set('log_errors', 'on');
    ini_set('error_log', ROOT . DS . 'temp' . DS . 'logs' . DS . 'error.log');

    if ($config->app->debug) {
        ini_set('display_errors', 'on');
    } else {
        ini_set('display_errors', 'off');
    }
}

/** Kiểm tra Magic Quotes và gỡ bỏ */

function stripSlashesDeep($value)
{
    $value = is_array($value) ? array_map('stripSlashesDeep', $value)
        : stripslashes($value);
    return $value;
}

function removeMagicQuotes()
{
    if (get_magic_quotes_gpc()) {
        $_GET = stripSlashesDeep($_GET);
        $_POST = stripSlashesDeep($_POST);
        $_COOKIE = stripSlashesDeep($_COOKIE);
    }
}

/** Kiểm tra register global và gỡ bỏ */
function unregisterGlobals()
{
    if (ini_get('register_globals')) {
        $array = array('_SESSION', '_POST', '_GET', '_COOKIE',
                        '_REQUEST', '_SERVER', '_ENV', '_FILE');
        foreach ($array as $value) {
            foreach ($GLOBALS[$value] as $key => $var) {
                if ($var == $GLOBALS[$key]) {
                    unset($GLOBALS[$key]);
                }
            }
        }
    }
}

function isAjaxRequest()
{
    return isset($_SERVER['HTTP_X_REQUESTED_WITH'])
        && strcasecmp($_SERVER['HTTP_X_REQUESTED_WITH'], 'XMLHttpRequest') == 0;
}

function redirect($url)
{
    $url = "location: " . ROOT_URL . $url;
    header($url);
}

function autoLoader($className)
{
    $file = strtolower($className) . '.class.php';
    $paths = array(LIB_DIR, CONTROLLERS_DIR, MODELS_DIR, VIEWS_DIR);
    foreach ($paths as $path) {
        $path .= $file;
        if (file_exists($path)) {
            require_once $path;
            return;
        }
    }
    throw new Exception("Không thể tìm thấy class [<strong>{$className}</strong>]", 102);
}

/** Sinh mật khẩu bảo mật 1 chiều */
function generatePwd($str)
{
    global $config;
    $str = $config->app->security_key . $str . $config->app->security_key;
    $str = hash('sha1', hash('sha256', $str));
    return md5($str);
}

function exceptionHandler($ex)
{
    if (class_exists('ErrorController')) {
        $error = new ErrorController();
        $error->view($ex);
    } else {
        echo '<pre>Xảy ra lỗi, vui lòng liên hệ quản trị!</pre>';
    }
}

function logTrace($content)
{
    $logfile = ROOT . 'temp' . DS . 'logs' . DS . 'trace.txt';

    file_put_contents($logfile, $content);

}
